﻿namespace GeckoLib.CodeHandler {
    public static class Commands {
        public const byte
            PokeByte = 0x01,
            Poke16 = 0x02,
            Poke32 = 0x03,
            ReadMemory = 0x04,
            FreezeGame = 0x06,
            UnfreezeGame = 0x07,
			ResumeGame = 0x08,
            BreakpointReadWrite = 0x09,
            BreakpointExecute = 0x10,
            BreakpointHit = 0x11,
            UploadBreakpointData = 0x2F,
            GetBreakpointData = 0x30,
            CancelBreakpoints = 0x38,
            SendCheats = 0x40,
            UploadCode = 0x41,
            Hook = 0x42,
            HookPause = 0x43,
            Step = 0x44,
            GameStatus = 0x50,
            ExeceuteCodes = 0x60,
            BreakpointExact = 0x89,
            Version = 0x99;
    }
    public enum GameStatus : byte {
        Unknown = 0x00,
        Running = 0x01,
        Paused = 0x02,
        Breakpoint = 0x03,
        Loader = 0x04 //TODO: Verify this
    }
    public static class TransferResponses {
        public const byte
            Acknowledge = 0xAA,
            Retry = 0xBB,
            Cancel = 0xCC;
    }
    public enum BreakpointType : byte {
        Execute = 0x03,
        Read = 0x05,
        Write = 0x06,
        ReadWrite = 0x07
    }
    public static class Version {
        public const byte
			Wii = 0x80,
			Gamecube = 0x81;
    }
    public static class PacketSizes {
        public const int
            Down = 0xF800, Up = 0xF80;
    }
    public enum TransferType {
        Download,
        Upload
    }
}